home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / ipop2d.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  131 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10130);
  10.  script_bugtraq_id(283);
  11.  script_version ("$Revision: 1.23 $");
  12.  script_cve_id("CVE-1999-0920");
  13.  
  14.  name["english"] = "ipop2d buffer overflow";
  15.  name["francais"] = "dΘpassement de buffer dans ipop2d";
  16.  
  17.  script_name(english:name["english"],
  18.           francais:name["francais"]);
  19.  
  20.  desc["english"] = "
  21. There is a buffer overflow in the imap suite provided with Debian GNU/Linux
  22. 2.1, which has a vulnerability in its POP-2 daemon, found in the ipopd
  23. package. This vulnerability allows an attacker to gain a shell as user
  24. 'nobody', but requires the attacker to have a valid pop2 account.
  25.  
  26. Risk factor : Medium";
  27.  
  28.  desc["francais"] = "Il y a un dΘpassement de buffer dans la suite
  29. imap distribuΘe avec Debian GNU/Linux 2.1, plus prΘcisement dans
  30. le server POP-2. Ce problΦme permet α une personne hostile 
  31. d'obtenir un shell, en tant que 'nobody', mais nΘcΘssite d'avoir
  32. un compte pop2 valide
  33.  
  34. Facteur de risque : Moyen";
  35.  
  36.  script_description(english:desc["english"],
  37.              francais:desc["francais"]);
  38.  
  39.  summary["english"] = "checks for a buffer overflow in pop2d";
  40.  summary["francais"] = "vΘrifie la prΘsence d'un dΘpassement de buffer dans pop2d";
  41.  script_summary(english:summary["english"],
  42.          francais:summary["francais"]);
  43.  
  44.  script_category(ACT_MIXED_ATTACK); # mixed
  45.  
  46.  
  47.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  48.            francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  49.  
  50.  family["english"] = "Gain a shell remotely";
  51.  family["francais"] = "Obtenir un shell α distance";
  52.  script_family(english:family["english"],
  53.            francais:family["francais"]); 
  54.  script_dependencie("find_service.nes", "logins.nasl");
  55.  script_require_keys("pop2/password");
  56.  script_require_ports("Services/pop2", 109);
  57.  exit(0);
  58. }
  59.  
  60.  
  61. port = get_kb_item("Services/pop2");
  62. if(!port)port = 109;
  63.  
  64. acct = get_kb_item("pop2/login");
  65. pass = get_kb_item("pop2/password");
  66.  
  67.  
  68.  
  69.  
  70. if((!acct) || (safe_checks()))
  71. {
  72.  banner = get_kb_item(string("pop2/banner/", port));
  73.  if(!banner)
  74.  {
  75.   if(get_port_state(port))
  76.   {
  77.    soc = open_sock_tcp(port);
  78.    if(!soc)exit(0);
  79.    banner = recv_line(socket:soc, length:4096);
  80.    close(soc);
  81.   }
  82.  }
  83.  if(banner)
  84.  {
  85.   if(ereg(pattern:"POP2 .* ((v[0-3]\..*)|(v4\.[0-4].*))",
  86.          string:banner))
  87.      {
  88.       alrt = "
  89. The remote pop server may be vulnerable to
  90. a buffer overflow in the FOLD command.
  91.  
  92. This allows authenticated users to gain an
  93. interactive shell on this host.
  94.  
  95. *** Nessus solely relied on banner information
  96. *** to issue this warning
  97.  
  98. Solution : upgrade
  99. Risk factor : Medium";
  100.      
  101.      security_warning(port:port, data:alrt);
  102.      }
  103.  }
  104.  exit(0);
  105. }
  106.  
  107.  
  108.  
  109. if((acct == "")||(pass == ""))exit(0);
  110.  
  111.  
  112. if(get_port_state(port))
  113. {
  114.  s1 = string("HELO ",get_host_name(), ":", acct, " ", pass, "\r\n");
  115.  s2 = string("FOLD ", crap(1024), "\r\n");
  116.  soc = open_sock_tcp(port);
  117.  if(!soc)exit(0);
  118.  b = recv_line(socket:soc, length:1024);
  119.  if(!strlen(b)){
  120.      close(soc);
  121.     exit(0);
  122.     }
  123.  send(socket:soc, data:s1);
  124.  b = recv_line(socket:soc, length:1024);
  125.  send(socket:soc, data:s2);
  126.  c = recv_line(socket:soc, length:1024);
  127.  if(strlen(c) == 0)security_warning(port);
  128.  close(soc);
  129. }
  130.  
  131.